/*******************************************************************************
 *                                    ZLG
 *                         ----------------------------
 *                         innovating embedded platform
 *
 * Copyright (c) 2001-present Guangzhou ZHIYUAN Electronics Co., Ltd.
 * All rights reserved.
 *
 * Contact information:
 * web site:    https://www.zlg.cn
 *******************************************************************************/
#ifndef __HC32F4A0_INTC_H
#define __HC32F4A0_INTC_H

#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus*/
#include "common/hc32f4a0_common.h"
#include "armv7m/armv7_core_m4.h"

/* \brief 最大中断数*/
#define IRQ_NUM_MAX         (128U)
/* \brief 中断回调函数*/
typedef void (*p_fn_irq_handler)(void *p_arg);

/* \brief 中断配置结构体*/
struct hc32f4a0_irq_cfg {
    IRQ_Src          int_src;  /* 外设中断号 */
    IRQn_Type        IRQn;     /* 外设中断类型 */
    p_fn_irq_handler p_fn_cb;  /* 中断回调函数  */
    void            *p_arg;    /* 中断回调函数参数*/
};

/**
 * \brief 注销中断
 */
int intc_irq_resign(IRQn_Type irq_num);
/**
 * \brief 配置中断
 */
int intc_irq_sign_in(const struct hc32f4a0_irq_cfg *p_irq_sign_cfg);
#ifdef __cplusplus
}
#endif  /* __cplusplus  */


#endif
